package com.estore.service;

import com.estore.model.Product;
import java.util.Comparator;

/**
 * 商品排序器工具类
 * 提供多种自定义的商品比较器（Comparator）
 */
public class ProductSorters {

    /**
     * 按商品价格从低到高排序
     * 使用匿名内部类实现
     */
    public static final Comparator<Product> BY_PRICE_ASC = new Comparator<Product>() {
        @Override
        public int compare(Product p1, Product p2) {
            return Double.compare(p1.getPrice(), p2.getPrice());
        }
    };

    /**
     * 按商品价格从高到低排序
     * 使用匿名内部类实现
     */
    public static final Comparator<Product> BY_PRICE_DESC = new Comparator<Product>() {
        @Override
        public int compare(Product p1, Product p2) {
            return Double.compare(p2.getPrice(), p1.getPrice());
        }
    };

    /**
     * 按商品库存从多到少排序
     * 使用Lambda表达式实现
     */
    public static final Comparator<Product> BY_STOCK_DESC = (p1, p2) ->
            Integer.compare(p2.getStock(), p1.getStock());

    // 私有构造函数，防止实例化
    private ProductSorters() {
        throw new AssertionError("不能实例化工具类");
    }
}